package com.culturalCenter.dataCenter.service.site;

import com.culturalCenter.dataCenter.customEntity.responseParam.site.SiteInfoResponse;
import com.culturalCenter.dataCenter.customEntity.responseParam.site.SiteListResponse;
import com.culturalCenter.dataCenter.customEntity.responseParam.site.SiteMenuResponse;
import com.culturalCenter.dataCenter.customEntity.responseParam.site.SiteStatusResponse;
import com.culturalCenter.dataCenter.entity.site.Site;
import com.culturalCenter.dataCenter.param.DateParam;
import com.culturalCenter.dataCenter.vo.SiteUsedDataVo;
import com.github.pagehelper.PageInfo;

import java.util.Date;
import java.util.List;

public interface SiteService {

    /**
     * Site分页查询
     *
     * @param page
     * @param size
     *
     * @return
     */
    PageInfo<Site> findPage(int page, int size);

    /**
     * 删除Site
     *
     * @param id
     *
     * @return
     */
    Integer delete(String id);

    /**
     * 修改Site数据
     *
     * @param site
     *
     * @return
     */
    Integer update(Site site);

    /**
     * 新增Site
     *
     * @param site
     *
     * @return
     */
    Integer add(Site site);

    /**
     * 根据ID查询Site
     *
     * @param id
     *
     * @return
     */
    Site findById(String id);

    /**
     * 查询所有Site
     *
     * @param site
     *
     * @return
     */
    List<Site> findAll(Site site);

    /**
     * 获取所有场地状态
     *
     * @return
     */
    SiteStatusResponse getSiteStatus();

    /**
     * 查询所有场地状态(历史)
     *
     * @return
     */
    SiteStatusResponse searchSiteStatus(Date startTime, Date endTime);

    /**
     * 查询所有场地状态(未来)
     *
     * @return
     */
    SiteStatusResponse searchSiteStatusAfter(Date startTime, Date endTime);

    /**
     * 获取场地片区
     *
     * @return
     */
    List<String> getSiteArea();

    /**
     * 获取场地列表（条件查询）
     *
     * @param siteName
     * @param siteType
     * @param pageNum
     * @param pageSize
     *
     * @return
     */
    SiteListResponse getSiteList(String siteName, String siteType, int pageNum, int pageSize);

    /**
     * 获取场地基本信息
     *
     * @param siteCode
     * @param size
     *
     * @return
     */
    SiteInfoResponse getSiteInfo(String siteCode, int size);

    /**
     * 根据siteCode查siteId
     *
     * @param siteCode
     *
     * @return
     */
    String getSiteIdBySiteCode(String siteCode);

    /**
     * 场地首页
     *
     * @return
     */
    SiteMenuResponse getSiteMenu(DateParam param);

    /**
     * 查询场地使用情况信息
     * @param siteCode
     * @param startDate
     * @param endDate
     * @return
     */
    SiteUsedDataVo getSiteUsedData(String siteCode, Date startDate, Date endDate);
}
